<?php
$db = Db::getInstance();
if(!Authenticate::isLogin()){
	header("Location: old.php");
	exit();
}

$ids = explode(',', isset($_POST['invoiceId'])? $_POST['invoiceId']: $_GET['invoiceId']);
foreach ($ids as $key => $value){
	$ids[$key] = "'".$db->real_escape_string($value)."'";
}
$ids = implode(',', $ids);
$query = "SELECT * FROM Invoice WHERE status!=0 AND id IN ({$ids})";
$result = $db->query($query);
if(!$result){
	throw new Exception($db->error);
}
if($result->num_rows > 0){
	$ids = array();
	while($row = $result->fetch_assoc()){
		$ids[] = $row['id'];
	}
	$ids = implode(',', $ids);
	$str = urlencode('ไม่สามารถแจ้งชำระเงินกับใบเรียกเก็บเงิน id ที่ '.$ids.' ได้ เนื่องใบเรียกเก็บเงินเหล่านี้ได้ถูกแจ้งชำระเงินไปแล้ว');
	header("Location: old.php?page=message&message={$str}");
	exit();
}
try {
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		$RequestSignature = md5($_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'].print_r($_POST, true));
		if (isset($_SESSION['LastRequest']) && $_SESSION['LastRequest'] == $RequestSignature)
		{
			header("Location: old.php");
			exit();
		}
		else
		{
			$_SESSION['LastRequest'] = $RequestSignature;
		}
		Db::getInstance()->autocommit(false);
		try{
			$file = isset($_FILES['slip']) && $_FILES['slip']['error']==0? $_FILES['slip']: null;
			Payment::paymentNormal(Authenticate::getId(), $_POST['date'], $_POST['time'], $_POST['money'], $_POST['bank'], explode(',', $_POST['invoiceIds']), $file);
			$paymentId = Db::getInstance()->insert_id;
			if(isset($_POST['taxInvoice'])){
				$query = "UPDATE Payment SET taxInvoice=1 WHERE id='{$paymentId}'";
				if(!$db->query($query)){
					throw new Exception($db->error);
				}
			}
			$query = "SELECT * FROM Payment WHERE id='{$paymentId}'";
			$result = $db->query($query);
			if(!$result){
				throw new Exception($db->error);
			}
			
			$dateTime = new DateTime($_POST['date'].' '.$_POST['time'].':00');
			$date = $dateTime->format('j/n/Y');
			$time = $dateTime->format('H:i');
			
			$mailMessage = <<<MAIL
<p>คุณได้ทำการแจ้งโอนเงินเรียบร้อยแล้ว กรุณารอการติดต่อกลับจากเจ้าหน้าที่</p>
<table cellspacing="0" cellpadding="10" border="1">
	<thead bgcolor="blue" style="color: white; background-color: blue;">
		<tr>
			<th>ธนาคาร</th>
			<th>วันที่โอน</th>
			<th>เวลาที่โอน</th>
			<th>จำนวนเงิน</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>{$_POST['bank']}</td>
			<td>{$date}</td>
			<td>{$time}</td>
			<td>{$_POST['money']}</td>
		</tr>
	</tbody>
</table>

<p>
facebook fanpage : <a href="http://facebook.com/pla2dc">facebook.com/pla2dc</a><br />
skype ID : pla2dc<br />
อีเมล์ : pla2dc@gmail.com<br />
โทรศัพท์ : 087-787-6960<br />
</p>

<p>เวลาทำการ : จันทร์ – เสาร์ เวลา 10.00 - 17.00 น.</p>

<p>
ขอแสดงความนับถือ<br />
Pla2 Data Center Chiang mai<br />
บริษัท ปลาทูฟิวชั่น จำกัด<br />
</p>
MAIL;
			$account = Account::instance()->getOne(Authenticate::getId());
			Db::getInstance()->commit();
            Notify::mail($account['email'], 'ได้ทำการแจ้งชำระเงิน', $mailMessage);
			$location = "old.php?page=message&redir=".urlencode('old.php?page=user/product')."&sec=2&message=".urlencode("แจ้งชำระเรียบร้อยแล้ว กรุณารอเจ้าหน้าที่ดำเนินการภายในเวลาไม่เกิน 24 ชม.");
			header("Location: {$location}");
		} catch (Exception $ex) {
			Db::getInstance()->rollback();
			throw $ex;
		}
	}else{
		unset($_SESSION['LastRequest']);
		if(!isset($_GET['invoiceId'])){
			throw new Exception('Need invoiceId');
		}
		$invids = explode(',', $_GET['invoiceId']);
		$invs = Invoice::instance()->get(array('id'=> $invids));
        Table::instanceTable('Package')->joinTo('package', 'id', 'packageId', $invs, Table::JOIN_ONE);
		$priceAll = 0;
		foreach($invs as $key => $value){
			$priceAll += $value['price'];
		}
		View::display('payment', array('priceAll'=>$priceAll, 'invoices'=>$invs, 'invoiceId'=> $_GET['invoiceId']));
	}
}
catch(Exception $ex) {
	Log::error($ex);
	View::display('message', array('message'=> $ex->getMessage()));
	throw $ex;
}